package com.ipartek.formacion.gestformwww.modelo.beans;

/**
 *
 * @author Victor
 * 04/10/2010
 */
import com.ipartek.formacion.gestformwww.controlador.Verificador;
import java.sql.Timestamp;
import java.util.Calendar;

public class DiaClase {

    private Integer modId;
    private String modNom;
    private Integer claId;
    private Integer docId;
    private String docNom;
    private String docApe1;
    private Integer curId;
    private Timestamp claFecha;
    private String claHoraInicioMan; //5
    private String claHoraFinMan; //5
    private String claObserv; //500
    private String claHoraInicioTar; //5
    private String claHoraFinTar; //5
    private Integer aulId;
    private String aulNom;
    private boolean conflictoAula;
    private boolean conflictoDocente;
    private String curNom;

    public DiaClase(Integer modId, String modNom, Integer claId, Integer docId, String docNom, Integer curId, Timestamp claFecha, String claHoraInicioMan, String claHoraFinMan, String claObserv, String claHoraInicioTar, String claHoraFinTar, int aulId, String aulNom) {
        this.modId = modId;
        this.modNom = modNom;
        this.claId = claId;
        this.docId = docId;
        this.docNom = docNom;
        this.curId = curId;
        this.claFecha = claFecha;
        this.claHoraInicioMan = claHoraInicioMan;
        this.claHoraFinMan = claHoraFinMan;
        this.claObserv = claObserv;
        this.claHoraInicioTar = claHoraInicioTar;
        this.claHoraFinTar = claHoraFinTar;
        this.aulId = aulId;
        this.aulNom = aulNom;
        conflictoAula = false;
        conflictoDocente = false;
    }

    public DiaClase() {
        conflictoAula = false;
        conflictoDocente = false;
    }

    public String getAulNom() {
        return aulNom;
    }

    public void setAulNom(String aulNom) {
        this.aulNom = aulNom;
    }

    public Integer getAulId() {
        return aulId;
    }

    public String getDocNom() {
        return docNom;
    }

    public String getDocente() {
        return docNom + (docApe1 == null ? "" : " " + docApe1);
    }

    public void setDocNom(String docNom) {
        this.docNom = docNom;
    }

    public String getModNom() {
        return modNom;
    }

    public void setModNom(String modNom) {
        this.modNom = modNom;
    }

    public void setAulId(Integer aulId) {
        this.aulId = aulId;
    }

    public void setAulId(String aulId) {
        try {
            this.aulId = Integer.parseInt(aulId);
        } catch (Exception ex) {
            this.aulId = null;
        }
    }

    public Timestamp getClaFecha() {
        return claFecha;
    }

    public void setClaFecha(Timestamp claFecha) {
        this.claFecha = claFecha;
    }

    public String getClaHoraFinMan() {
        return claHoraFinMan;
    }

    public void setClaHoraFinMan(String claHoraFinMan) {
        this.claHoraFinMan = claHoraFinMan;
    }

    public String getClaHoraFinTar() {
        return claHoraFinTar;
    }

    public void setClaHoraFinTar(String claHoraFinTar) {
        this.claHoraFinTar = claHoraFinTar;
    }

    public String getClaHoraInicioMan() {
        return claHoraInicioMan;
    }

    public void setClaHoraInicioMan(String claHoraInicioMan) {
        this.claHoraInicioMan = claHoraInicioMan;
    }

    public String getClaHoraInicioTar() {
        return claHoraInicioTar;
    }

    public void setClaHoraInicioTar(String claHoraInicioTar) {
        this.claHoraInicioTar = claHoraInicioTar;
    }

    public Integer getClaId() {
        return claId;
    }

    public void setClaId(Integer claId) {
        this.claId = claId;
    }

    public String getClaObserv() {
        return claObserv;
    }

    public void setClaObserv(String claObserv) {
        if (Verificador.caracteresCorrectos(claObserv)) {
            this.claObserv = claObserv;
        }
    }

    public Integer getCurId() {
        return curId;
    }

    public void setCurId(Integer curId) {
        this.curId = curId;
    }

    public Integer getDocId() {
        return docId;
    }

    public void setDocId(Integer docId) {
        this.docId = docId;
    }

    public void setDocId(String docId) {
        try {
            this.docId = Integer.parseInt(docId);
        } catch (Exception ex) {
            this.docId = null;
        }
    }

    public Integer getModId() {
        return modId;
    }

    public void setModId(Integer modId) {
        this.modId = modId;
    }

    public String getHorario() {
        String horario = "";
        horario += this.claHoraInicioMan != null ? claHoraInicioMan : "";
        horario += (this.claHoraFinMan != null && !this.claHoraFinMan.isEmpty()) ? ("-" + claHoraFinMan) : "";
        horario += (this.claHoraInicioMan != null && this.claHoraFinMan != null && !claHoraInicioMan.isEmpty() && !claHoraFinMan.isEmpty()) ? "<br>" : "";
        horario += this.claHoraInicioTar != null ? claHoraInicioTar : "";
        horario += (this.claHoraFinTar != null && !this.claHoraFinTar.isEmpty()) ? ("-" + claHoraFinTar) : "";
        return horario;
    }

    public boolean comprobarObserv(DiaClase dc) {
        boolean observ = true;
        if (dc.getClaObserv() != null || dc.getClaObserv().isEmpty()) {
            observ = true;
        } else {
            observ = false;
        }
        return observ;
    }

    public void setModId(String modId) {
        try {
            this.modId = Integer.parseInt(modId);
        } catch (Exception ex) {
            this.modId = null;
        }
    }

    public boolean isConflictoAula() {
        return conflictoAula;
    }

    public void setConflictoAula(boolean conflictoAula) {
        this.conflictoAula = conflictoAula;
    }

    public boolean isConflictoDocente() {
        return conflictoDocente;
    }

    public void setConflictoDocente(boolean conflictoDocente) {
        this.conflictoDocente = conflictoDocente;
    }

    public String getCurNom() {
        return curNom;
    }

    public void setCurNom(String curNom) {
        this.curNom = curNom;
    }

    public String getDocApe1() {
        return docApe1;
    }

    public void setDocApe1(String docApe1) {
        this.docApe1 = docApe1;
    }

    public String getObservacionesActualizadas() {
        String obs = "";
        if (this.claObserv != null) {
            obs = claObserv;
        }
        obs = obs.replace("Aula ocupada./Docente ocupado.", "");
        obs = obs.replace("Aula ocupada.", "");
        obs = obs.replace("Docente ocupado.", "");
        obs = obs.trim();
        if (conflictoAula && conflictoDocente && !obs.contains("Aula ocupada./Docente ocupado.")) {
            obs += (obs.isEmpty() ? "" : " ") + "Aula ocupada./Docente ocupado.";
        }
        if (conflictoAula && !obs.contains("Aula ocupada.")) {
            obs += (obs.isEmpty() ? "" : " ") + "Aula ocupada.";
        }
        if (conflictoDocente && !obs.contains("Docente ocupado.")) {
            obs += (obs.isEmpty() ? "" : " ") + "Docente ocupado.";
        }
        return obs;
    }

    public String getDatosDiaClase() {
        String cadena = "";
        cadena = "Modulo: " + (this.modNom != null ? modNom : "");
        cadena += "<br>Aula: " + (this.aulNom != null ? aulNom : "");
        cadena += "<br>Docente: " + (this.docNom != null ? docNom : "");
        cadena += "<br>Horario mañana: " + (this.claHoraInicioMan != null ? claHoraInicioMan : "");
        cadena += ((this.claHoraFinMan != null && !this.claHoraFinMan.isEmpty()) ? ("-" + claHoraFinMan) : "");
        cadena += "<br>Horario tarde: " + (this.claHoraInicioTar != null ? claHoraInicioTar : "");
        cadena += ((this.claHoraFinTar != null && !this.claHoraFinTar.isEmpty()) ? ("-" + claHoraFinTar) : "");
        cadena += "<br>Observaciones: " + (this.claObserv != null ? claObserv : "");
        cadena += "<br><center>-------------------------------------------<br>Haz click para modificar</center>";
        return cadena;
    }

    public String getDatosDiaClaseCalendario() {
        String cadena = "";
        cadena = "Modulo: " + (this.modNom != null ? modNom : "");
        cadena += "<br>Aula: " + (this.aulNom != null ? aulNom : "");
        cadena += "<br>Docente: " + (this.docNom != null ? docNom : "");
        cadena += "<br>Horario mañana: " + (this.claHoraInicioMan != null ? claHoraInicioMan : "");
        cadena += ((this.claHoraFinMan != null && !this.claHoraFinMan.isEmpty()) ? ("-" + claHoraFinMan) : "");
        cadena += "<br>Horario tarde: " + (this.claHoraInicioTar != null ? claHoraInicioTar : "");
        cadena += ((this.claHoraFinTar != null && !this.claHoraFinTar.isEmpty()) ? ("-" + claHoraFinTar) : "");
        cadena += "<br>Observaciones: " + (this.claObserv != null ? claObserv : "");
        cadena += "<br><center>-------------------------------------------<br></center>";
        return cadena;
    }

    public boolean getConflicto() {
        return this.conflictoAula || this.conflictoDocente;
    }

    public boolean comparar(Calendar c) {
        boolean comparativa = false;
        //Comparar fechas
        if (this.claFecha != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(claFecha);
            if ((c.get(Calendar.YEAR) == cal.get(Calendar.YEAR)) && (c.get(Calendar.MONTH) == cal.get(Calendar.MONTH)) && (c.get(Calendar.DAY_OF_MONTH) == cal.get(Calendar.DAY_OF_MONTH))) {
                comparativa = true;
            }
            //comparativa = this.claFecha.getTime() == c.getTimeInMillis();
        }
        return comparativa;
    }
}
